#ifndef APP_H
#define APP_H

#include <windows.h>
#include <windowsx.h>
#include <string>

#include "Graphics.h"

class App
{
public:
	App();
	App(HINSTANCE hInstance, std::string wndcaption);
	~App();

	//SystemClass(const SystemClass&);

	HINSTANCE GetAppInst() {return m_hAppInst;}
	HWND GetMainWnd() {return m_hMainWnd;}
	
	bool Initialize();
	void Shutdown();
	int Run();

	LRESULT CALLBACK MessageHandler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam);

private:
	bool Frame();
	void InitWindow(int& screenWidth, int& screenHeight);
	void ShutdownWindows();

private:
	bool m_AppPaused;
	bool m_Minimized;
	bool m_Maximized;
	bool m_Resizing;

	std::string m_MainWndCaption;	// windows name
	HINSTANCE m_hAppInst;			// application instance handle
	HWND m_hMainWnd;				// application window handle

	//InputClass* m_Input;
	//Graphics* m_Graphics;

};

//Global 
extern App* g_App;

#endif